The invention is generally related to computers and computer software. More specifically, the invention is related to computer interfaces with peripheral devices and the maintenance thereof.
Computer interfaces typically include hardware and/or software designed to communicate information from one system of hardware and/or software to another. One principal use of computer interfaces is in enabling communication between the primary processing complex (i.e., the xe2x80x9cbrainsxe2x80x9d) of a computer and one or more peripheral or external components or devices that enable the computer to communicate with the outside world. Given the wide variety of types of peripheral or external devices, as well as the variety of hardware designs utilized for such device types, often a computer will utilize an input/output (I/O) interface to simplify the interconnection and communication between the computer and such devices.
For example, one type of I/O interface utilized by some midrange, mainframe and other multi-user computer systems is a hierarchical input/output (I/O) interface. In a hierarchical I/O interface, devices such as computer networks, workstations, storage devices, display devices, etc. are interfaced with the processing complex of a computer through a hierarchical arrangement of input/output adaptors (IOA""s) and input/output processors (IOP""s).
An IOA generally refers to the interface control logic for a peripheral component that implements a particular type of connection, e.g., Ethernet, RS232, twinaxial, SCSI, etc. Often an IOA will also incorporate the physical connector required to connect the peripheral component to the system. IOA""s are typically fairly simple, and often lack powerful processors and large arrays of memory. An IOP, on the other hand, typically includes a relatively complex processor and an appreciable amount of memory, and is used to interface one or more IOA""s with the processing complex (e.g., the system processor) of a computer to offload much of the I/O related work (e.g., interrupts, buffering, etc.) from the processing complex. An IOP also typically encapsulates the specifics of the IOA""s with which the IOP is interfaced to provide a more uniform interface to the processing complex.
By allocating I/O processing to a processor separate from the primary processing complex of a computer, significant performance gains are often realized, since the processing complex can be freed from having to directly handle the timeconsuming operations associated with I/O data transfers and interrupt handling. Moreover, IOP""s typically provide a highly configurable and flexible interface for peripheral components, since much of the interface logic can be implemented in software that is executed by the IOP""s. As a result, device-specific operations can be xe2x80x9cwrappedxe2x80x9d to provide a common software interface that effectively permits an application executing on a computer to access a peripheral component without any special regard for the specific intricacies of the underlying hardware.
Typically, a hierarchical I/O interface utilizes xe2x80x9cbindingsxe2x80x9d between IOP""s and IOA""s, whereby each IOP is assigned responsibility for handling the interface between the computer and one or more IOA""s. So that the overall performance of the computer is maximized, often attempts are made to balance IOP workloads and ensure that responsibility for IOA""s is distributed as equally as possible between multiple IOP""s. Otherwise, some IOP""s may become overtaxed and slow down the system, while other IOP""s may be underutilized and thus waste available processing capacity.
In some conventional hierarchical I/O interfaces, the bindings between IOP""s and IOA""s are more or less staticxe2x80x94that is, once the bindings are established, they are relatively difficult and cumbersome to change. Moreover, the bindings are often based upon the relative locations and types of IOA""s and IOP""s in a computer. In some instances, however, it may be desirable to change the bindings between IOP""s and IOA""s, e.g., upon failure of an IOP, or if the workloads of different IOP""s are significantly unbalanced.
Typically, IOP""s handle specific I/O ports (or locations) in a computer, e.g., specific card slots on an interface bus, so that a particular IOP is assigned to handle any IOA""s physically connected to one or more I/O ports in the computer. As a result, transferring responsibility for an IOA from one IOP to another typically requires that the IOA be physically removed from one location and replaced in another location in the computer.
At a minimum, moving an IOA requires physical access to the computer. More typically, moving an IOA requires that at least a portion of the computer be shut down and rebooted. In many multi-user computer environments, however, system availability is a critical requirement, and as such the inability to access a computer for any amount of time may have a significant impact on the productivity of a relatively large number of users. In many mission-critical applications, no system downtime is acceptable, and as such, changing bindings between IOA""s and IOP""s is effectively not supported.
Therefore, a significant need exists in the art for a manner of changing the bindings between IOA""s and IOP""s in a hierarchical I/O interface with minimal impact on system availability.
The invention addresses these and other problems associated with the prior art by providing an apparatus, program product and method in which the bindings between IOA""s and IOP""s in a hierarchical I/O interface of a computer can be dynamically controlled, and while maintaining at least partial system availability. Specifically, embodiments consistent with the invention support the dynamic reassignment of an IOA in a hierarchical I/O interface from one IOP to another IOP such that the latter IOP takes over management of data transfer between the processing complex of the computer and the IOA from the former IOP.
At least partial system availability is maintained during dynamic reassignment of an IOA to an IOP in embodiments consistent with the invention. As such, the management of hardware resource such as IOA""s and IOP""s can be performed with reduced system downtime, and often with less invasive maintenance procedures, since in many instances physical access to computer hardware is not required. In addition, in some embodiments of the invention, dynamic reassignment can occur without any attendant change in location of any IOA or IOP.
Furthermore, in some embodiments of the invention, dynamic reassignment of IOA""s can be performed in response to detected failures for given IOP""s, such that the failure in one IOP can be quickly and easily remedied through reassignment of any IOA""s previously managed by the failed IOP to different, operational IOP""s. In other embodiments of the invention, system performance can be monitored, and the bindings between IOA""s and IOP""s dynamically reassigned to maximize performance, e.g., by better balancing the workloads of multiple IOP""s.
These and other advantages and features, which characterize the invention, are set forth in the claims annexed hereto and forming a further part hereof However, for a better understanding of the invention, and of the advantages and objectives attained through its use, reference should be made to the Drawings, and to the accompanying descriptive matter, in which there is described exemplary embodiments of the invention.